---
id: tcpdescription
sidebar_position: 1
title:  产品及架构介绍
sidebar_label: 6.1 产品及架构介绍
---

## 一、产品介绍
- TCP组件是基于TCP协议的最基础组件，其基础功能和Socket一致，只是经过TouchSocket封装后，将高连接、高并发，数据处理等一系列基础功能打包，让使用者不再关心基础架构建设，专心于业务。
- 理论上TCP组件可用于任何基于TCP协议的产品，例如：HTTP、FTP、WebSocket、Telnet、PLC通信、上位机通信等。
## 二、产品特点

- 简单易用。
- 多线程。
- 内存池
- 高性能（服务器每秒可接收200w条信息，接收数据流量可达2.5GB/s）。
- **多地址监听**（可以一次性监听多个IP及端口）
- 适配器预处理，一键式解决**分包**、**粘包**、对象解析(如HTTP，Json)等。
- 超简单的同步发送、异步发送、接收等操作。
- 基于事件驱动，让每一步操作尽在掌握。

#### 2.1 延迟缓存发送
众所周知，tcp数据报文为了发送效率，会默认启用**延迟算法**。但是这种设置，只能一定程度的缓解小数据发送效率低的问题，因为它为了保证多线程发送的有序性，在send函数中设置了线程同步，所以说，每调用一次send，实际上都是巨大的性能消耗（此处用iocp发送亦然）。所以，要解决该问题， 最终还是要将小数据，组合成大数据，这样才能更高效率的发送。所以，DelaySender正是负责此类工作的。

使用DelaySender，会一定程度的降低发送的及时性，但是降低程度并不高，简单来说：

1. 如果一个包大于512kb，则不会延迟，直接发送。
2. 如果发送第一个包，与第二个包的时间间隔小于一个线程池线程调度的时间（这个时间极短，一般来说会在10微秒左右），则会将这两个包压缩为一个包发送。

## 三、产品应用场景

- TCP基础使用场景：可跨平台、跨语言使用。
- 自定义协议解析场景：可解析任意数据格式的TCP数据报文。

## 四、服务器架构
服务器在收到新客户端连接时，会创建一个SocketClient的派生类实例，与远程Client对应，后续的数据通信均由此实例负责。
![](https://cdn.nlark.com/yuque/0/2022/jpeg/25438888/1644457249253-c4da1549-bdc1-4849-85d7-0a46bf97c77c.jpeg)

## 五、服务器工作流程
![](https://cdn.nlark.com/yuque/0/2022/jpeg/25438888/1644495351293-f594ddc2-a57d-495a-acfe-758620e97ac7.jpeg)
## 六、客户端工作流程
![](https://cdn.nlark.com/yuque/0/2022/jpeg/25438888/1644495854071-a320a8b5-85ba-4563-a2fa-5bd573af850c.jpeg)




